package com.nari.ncps.screen.mapper.electric;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nari.ncps.screen.entity.electric.ElectricSafetyenvPlantRt;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 火电安全环保电厂实时数据表 Mapper 接口
 * </p>
 *
 * @author xuesong
 * @since 2025-09-24
 */
public interface ElectricSafetyenvPlantRtMapper extends BaseMapper<ElectricSafetyenvPlantRt> {

    /**
     * 根据年份查询电厂实时数据
     * @param year 年份
     * @return 电厂实时数据列表
     */
    List<ElectricSafetyenvPlantRt> selectByYear(@Param("year") Integer year);

    /**
     * 根据年份和月份查询电厂实时数据
     * @param year 年份
     * @param month 月份
     * @return 电厂实时数据列表
     */
    List<ElectricSafetyenvPlantRt> selectByYearAndMonth(@Param("year") Integer year, @Param("month") Integer month);

    /**
     * 根据年份、月份和日期查询电厂实时数据
     * @param year 年份
     * @param month 月份
     * @param day 日期
     * @return 电厂实时数据列表
     */
    List<ElectricSafetyenvPlantRt> selectByDate(@Param("year") Integer year, @Param("month") Integer month, @Param("day") Integer day);

    /**
     * 根据电厂编码查询实时数据
     * @param plantCode 电厂编码
     * @return 电厂实时数据列表
     */
    List<ElectricSafetyenvPlantRt> selectByPlantCode(@Param("plantCode") String plantCode);

    /**
     * 根据公司编码查询实时数据
     * @param companyCode 公司编码
     * @return 电厂实时数据列表
     */
    List<ElectricSafetyenvPlantRt> selectByCompanyCode(@Param("companyCode") String companyCode);

    /**
     * 查询超标排放数据
     * @param year 年份
     * @param month 月份
     * @return 超标排放数据列表
     */
    List<ElectricSafetyenvPlantRt> selectExcessiveEmission(@Param("year") Integer year, @Param("month") Integer month);

    /**
     * 统计电厂月度排放汇总数据
     * @param year 年份
     * @param month 月份
     * @param plantCode 电厂编码
     * @return 月度排放汇总数据
     */
    ElectricSafetyenvPlantRt selectMonthlyStatistics(@Param("year") Integer year, @Param("month") Integer month, @Param("plantCode") String plantCode);

    /**
     * 查询排放趋势数据（按日期）
     * @param year 年份
     * @param month 月份
     * @param plantCode 电厂编码
     * @return 日度排放趋势数据
     */
    List<ElectricSafetyenvPlantRt> selectDailyTrend(@Param("year") Integer year, @Param("month") Integer month, @Param("plantCode") String plantCode);

    /**
     * 按电厂维度统计年度排放累计数据
     * @param year 年份
     * @return 电厂年度排放统计数据列表
     */
    List<Map<String, Object>> selectPlantAnnualEmissionStatistics(@Param("year") Integer year);
}
